// 函数在执行的时候会放到一个执行栈上，当函数执行完毕之后会从执行栈上一处，但是堆上的作用域成员因为被外部引用不能释放，因此内部函数依然可以访问外部函数的成员

// 生成计算数字的多少次幂的函数
function makePower (power) {
    return function(x) {
        return Math.pow(x, power)
    }
}

console.log(makePower(2)(4))
console.log(makePower(3)(4));

// 工资计算器
function makeSalary (x) {
    return function (y) {
        return x + y
    }
}
console.log(makeSalary(1500)(2000));